package app

import (
	"calculator/internal/core/schema"

	"context"

	"gorm.io/gorm"
)

type DBConfig struct {
	Driver   string // 数据库驱动
	DSN      string // 数据库连接字符串
	LogLevel int    // 日志级别
}

// AppService 数据操作服务接口
type AppService interface {

	// GetDB 获取数据库连接
	GetDB(ctx context.Context) *gorm.DB

	// GetSchema 获取当前Schema定义
	GetSchema() *schema.Schema

	// UpdateSchema 更新整个Schema定义
	UpdateSchema(jsonContent []byte) error

	// ExportSchema 将整个Schema导出为JSON格式
	ExportSchema() ([]byte, error)

	// GetTable 获取指定模型下的表
	GetTable(tableName string) (*schema.Table, error)

	// GetField 获取指定表中的字段
	GetField(tableName, fieldName string) (*schema.Field, error)

	// Validate 验证数据是否符合Schema定义
	Validate() error
}
